'''
# 了解一些常用的，然后在项目过程中不会的再查文档
进程间的通信
通过队列进行平行通信
1、导入包
from multiprocessing import Queue
2、创建队列
q = Queue(8)  # 8代表创建的队列能够容纳8个空间
3、调用方法
q.put(args, timeout)  #args传入队列的参数, timeout等待超时报错
q.get(timeout)  # timeout等待超时报错
q.full() # 判断列表是否已经满了
q.empty()  # 判断列表是否已经空了
q.put_nowait()  # 存不等--》timeout=0
q.get_nowait()  # 取不等--》timeout=0
'''
from multiprocessing import Process, Queue
from time import sleep


def download(q):
	images = ['girl.jpg', 'boy.jpg', 'man.jpg']
	for image in images:
		print('正在下载：',image)
		sleep(0.5)
		q.put(image)
		

def getfile(q):
	while True:
		try:
			file = q.get(timeout=5)
			print('{}保存成功！'.format(file))
		except:
			print('全部保存成功')
			break

if __name__ == '__main__':
	q = Queue(5)
	p1 = Process(target=download, args=(q,))
	p2 = Process(target=getfile, args=(q,))
	
	p1.start()
	p1.join()  # 阻塞先让p1进程先执行
	
	
	p2.start()
	p2.join()  # 阻塞让p2进程执行